به دست آوردن مقدار آرایه از فایل استرینگ و ریختن آن در یک متغیر استاتیک در یک non-activity class
همان طور که از عنوان سوال پیداست من یک آرایه دارم که در فایل استرینگ تعریف شده و قصد دارم در یک متغیر استاتیک بریزم مثل زیر
private static String[] array1= getResources().getStringArray(R.array.arrayName);
اولا چون از یک کلاس non-activity دارم اصلا متد getResource رو نمیشناسه و از طرف دیگه حتی اگه کلاس من از نوع اکتیویتی باشه هم نمیشه مقدار را در یک متغیر استاتیک ریخت ممنون میشم اگه کسی میدونه راهنماییم کنه
سلام ، به این شکل استفاده کنید :
آیتم تعریف شده در فایل Strings ( یا همون آرایه String ها ) :
<string-array name="force_unit">
<item>tonf</item>
<item>kgf</item>
<item>KN</item>
<item>N</item>
<item>tonf</item>
<item>kgf</item>
<item>KN</item>
<item>N</item>
<item>tonf</item>
<item>kgf</item>
<item>KN</item>
<item>N</item>
</string-array>
بعد id اون آیتم رو با استفاده نام آیتم بگیرید :
int id_force = getResources().getIdentifier("force_unit", "array", getPackageName());
حالا این id در تابع getResources().getStringArray استفاده میشه :
String[] force_Units = getResources().getStringArray(id_force);
به این صورت فک میکنم حل شه
public class MyClass{
private Context mContext;
private static String[] array1;
public MyClass(Context context){
mContext = context;
array1 = context.getResources().getStringArray(R.array.array_name);
}
}
private static String[] array1= G.currentActivity.getResources().getStringArray(R.array.arrayName);
این که چه جوری از currentActivity استفاده کنید در آموزشهای استاد موجوده.
این جواب میده :
String[] array = Resources.getSystem().getStringArray(R.array.array_name);
واقعا غیر از این ها راه حل دیگری اصلا منطقی نیست که باشه :
یک : پاسخ قبلی
دو : چیزی که اکثر بچه ها گفتن
//ایجاد کانتکس استاتیک در کلاس اپلیکیشن
public class G extends Application{
public static Context context;
@Override
public void onCreate(){
super.onCreate();
context = this;
}
}
// و استفاده از اون در کلاس مورد نظرتون
public class MyClass{
private String[] array1;
public myClass(){
array1 = G.context.getResources().getStringArray(R.string.string_name);
//البته میشه حتی تا گت ریسورس هم استاتیک باشه ولی احتمالا اپتیمایز نیست
}
}
// والبته کلاس جی در مانیفست
<application
android:name=".G"
...
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .